package tq.com.tqstudent.utils;

import android.app.ActivityManager;
import android.content.Context;
import android.os.Environment;

import com.bumptech.glide.request.RequestOptions;
import com.cropimage.tq.cropper.CropImage;
import com.cropimage.tq.cropper.CropImageView;
import com.scwang.smartrefresh.layout.SmartRefreshLayout;

import java.util.ArrayList;
import java.util.List;

import tq.com.tqstudent.App;
import tq.com.tqstudent.Constants;
import tq.com.tqstudent.R;
import tq.com.tqstudent.bean.ClassTypeBean;

/**
 * @Author rames
 * @date 2019/3/19 11:03
 */
public class VarietyUtil {

    public static String getSubjectName(int subject) {
        switch (subject) {
            case 10:
                return "语文";
            case 11:
                return "数学";
            case 12:
                return "英语";
            case 13:
                return "物理";
            case 14:
                return "化学";
            case 15:
                return "生物";
            case 16:
                return "历史";
            case 17:
                return "地理";
            case 18:
                return "计算机(编程)";
            case 19:
                return "绘画";
            case 20:
                return "书法";

            default:
                return "";
        }
    }

    /**
     * 得到班级的名字
     */
    public static String getClassName(int classIndex) {
        switch (classIndex) {
            case 1:
                return "小学一年级";
            case 2:
                return "小学二年级";
            case 3:
                return "小学三年级";
            case 4:
                return "小学四年级";
            case 5:
                return "小学五年级";
            case 6:
                return "小学六年级";
            case 7:
                return "小学七年级";
            case 11:
                return "初中一年级";
            case 12:
                return "初中二年级";
            case 13:
                return "初中三年级";
            case 21:
                return "高中一年级";
            case 22:
                return "高中二年级";
            case 23:
                return "高中三年级";

            default:
                return "";
        }
    }

    public static ArrayList<ClassTypeBean> getAllClass() {
        ArrayList<ClassTypeBean> list = new ArrayList<>();
        list.add(new ClassTypeBean(1, "小学一年级"));
        list.add(new ClassTypeBean(2, "小学二年级"));
        list.add(new ClassTypeBean(3, "小学三年级"));
        list.add(new ClassTypeBean(4, "小学四年级"));
        list.add(new ClassTypeBean(5, "小学五年级"));
        list.add(new ClassTypeBean(6, "小学六年级"));
        list.add(new ClassTypeBean(7, "小学七年级"));

        list.add(new ClassTypeBean(11, "初中一年级"));
        list.add(new ClassTypeBean(12, "初中二年级"));
        list.add(new ClassTypeBean(13, "初中三年级"));

        list.add(new ClassTypeBean(21, "高中一年级"));
        list.add(new ClassTypeBean(22, "高中二年级"));
        list.add(new ClassTypeBean(23, "高中三年级"));
        return list;
    }

    /**
     * 发布的内容分类
     */
    public static String getIssueContentType(int type) {
        switch (type) {
            case 10:
                return "同步";
            case 11:
                return "单元";
            case 12:
                return "复习卷";
            case 13:
                return "考卷";
            case 14:
                return "答案";
            case 15:
                return "微课";
            case 16:
                return "讲评";
            case 17:
                return "提问答疑";
            case 18:
                return "请他分享";
            case 19:
                return "巩固练习";

            default:
                return "";
        }
    }

    /**
     * 获得留言的类型
     */
    public static String msgType(int type) {
        switch (type) {
            case 0:
                return "文本";
            case 1:
                return "[图片]";
            case 2:
                return "[视频]";

            default:
                return "";
        }
    }

    public static String getContentByType(int type, String content){
        if (type == 1){
            return "[图片]";
        } else if (type == 2) {
            return "[视频]";
        } else {
            return content;
        }
    }

    /**
     * 得到对应的背景图
     */
    public static int getCategoryBg(int id) {
        switch (id) {
            // 讲评
            case 16:
                return R.mipmap.icon_bg3;

            // 提问&群答疑
            case 17:
                return R.mipmap.icon_bg2;

            // 微课
            case 15:
                return R.mipmap.icon_bg4;

            // 答案&详解
            case 14:
                return R.mipmap.icon_bg5;

            // 分享
            case 18:
                return R.mipmap.icon_bg6;

            // 讲义
            default:
                return R.mipmap.icon_bg1;
        }
    }

    /**
     * 得到对应的背景图
     */
    public static int getCategoryTextBg(int id) {
        switch (id) {
            // 讲评
            case 16:
                return R.mipmap.icon_text_bg3;

            // 提问&群答疑
            case 17:
                return R.mipmap.icon_text_bg2;

            // 微课
            case 15:
                return R.mipmap.icon_text_bg4;

            // 答案&详解
            case 14:
                return R.mipmap.icon_text_bg5;

            // 分享
            case 18:
                return R.mipmap.icon_text_bg6;

            // 讲义
            default:
                return R.mipmap.icon_text_bg1;

        }
    }

    /** 兼容获取头像的地址 */
    public static String getHeadImgUri(String uri){
        if(uri.startsWith("http")){
            return uri;
        }

        return App.getFileUrl(uri);
    }

    /** crash日志的保存目录 */
    public static String getCrashLogPath() {
        String file_dir = "";
        // SD卡是否存在
        boolean isSDCardExist = Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState());
        // Environment.getExternalStorageDirectory()相当于File file=new File("/sdcard")
        boolean isRootDirExist = Environment.getExternalStorageDirectory().exists();
        if (isSDCardExist && isRootDirExist) {
            file_dir = Constants.CATHE_CRASH_PATH;
        } else {
            // MyApplication.getInstance().getFilesDir()返回的路劲为/data/data/PACKAGE_NAME/files，其中的包就是我们建立的主Activity所在的包
            file_dir = App.getApp().getFilesDir().getAbsolutePath() + "/crashlog/";
        }
        return file_dir;
    }

    /** glide加载图片的默认设置 */
    public static RequestOptions getGlideHeadOptions(int resID){
        RequestOptions requestOptions = new RequestOptions();
        requestOptions.error(resID);
        requestOptions.placeholder(resID);
        return requestOptions;
    }

    public static RequestOptions getGlideHeadOptions(){
        return getGlideHeadOptions(R.mipmap.icon_head_default);
    }

    /** 剪切图片的设置 */
    public static void initCropBuilder(CropImage.ActivityBuilder builder){
        builder
                // 是否启动多点触摸
                .setMultiTouchEnabled(false)
                // 设置网格显示模式
                .setGuidelines(CropImageView.Guidelines.OFF)
                // 圆形/矩形
                .setCropShape(CropImageView.CropShape.RECTANGLE)
                // 调整裁剪后的图片最终大小
                .setRequestedSize(1920, 1080, CropImageView.RequestSizeOptions.RESIZE_INSIDE);
    }

    /** 判断程序是否在前台运行（当前运行的程序） */
    public static boolean isRunForeground(Context context) {
        ActivityManager activityManager = (ActivityManager) context.getApplicationContext()
                .getSystemService(Context.ACTIVITY_SERVICE);
        String packageName = context.getApplicationContext().getPackageName();
        List<ActivityManager.RunningAppProcessInfo> appProcesses = activityManager
                .getRunningAppProcesses();
        if (appProcesses == null)
            return false;
        for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) {
            if (appProcess.processName.equals(packageName)
                    && appProcess.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {
                return true;// 程序运行在前台
            }
        }
        return false;
    }

    /**
     * 设置下拉刷新是否可用
     */
    public static void setRefreshEnable(SmartRefreshLayout refreshLayout, boolean enable) {
        refreshLayout.setEnableRefresh(enable);
        refreshLayout.setEnableLoadMore(enable);
        refreshLayout.setEnableAutoLoadMore(false);
        refreshLayout.setDisableContentWhenLoading(false);
        refreshLayout.setDisableContentWhenRefresh(false);
        refreshLayout.setEnableLoadMoreWhenContentNotFull(false);



        /*//下面示例中的值等于默认值
        refreshLayout.setPrimaryColorsId(R.color.colorPrimary, android.R.color.white);
        refreshLayout.setDragRate(0.5f);//显示下拉高度/手指真实下拉高度=阻尼效果
        refreshLayout.setReboundDuration(300);//回弹动画时长（毫秒）

        refreshLayout.setHeaderHeight(100);//Header标准高度（显示下拉高度>=标准高度 触发刷新）
        refreshLayout.setHeaderHeightPx(100);//同上-像素为单位 （V1.1.0删除）
        refreshLayout.setFooterHeight(100);//Footer标准高度（显示上拉高度>=标准高度 触发加载）
        refreshLayout.setFooterHeightPx(100);//同上-像素为单位 （V1.1.0删除）

        refreshLayout.setFooterHeaderInsetStart(0);//设置 Header 起始位置偏移量 1.0.5
        refreshLayout.setFooterHeaderInsetStartPx(0);//同上-像素为单位 1.0.5 （V1.1.0删除）
        refreshLayout.setFooterFooterInsetStart(0);//设置 Footer 起始位置偏移量 1.0.5
        refreshLayout.setFooterFooterInsetStartPx(0);//同上-像素为单位 1.0.5 （V1.1.0删除）

        refreshLayout.setHeaderMaxDragRate(2);//最大显示下拉高度/Header标准高度
        refreshLayout.setFooterMaxDragRate(2);//最大显示下拉高度/Footer标准高度
        refreshLayout.setHeaderTriggerRate(1);//触发刷新距离 与 HeaderHeight 的比率1.0.4
        refreshLayout.setFooterTriggerRate(1);//触发加载距离 与 FooterHeight 的比率1.0.4

        refreshLayout.setEnableRefresh(true);//是否启用下拉刷新功能
        refreshLayout.setEnableLoadMore(false);//是否启用上拉加载功能
        refreshLayout.setEnableAutoLoadMore(true);//是否启用列表惯性滑动到底部时自动加载更多
        refreshLayout.setEnablePureScrollMode(false);//是否启用纯滚动模式
        refreshLayout.setEnableNestedScroll(false);//是否启用嵌套滚动
        refreshLayout.setEnableOverScrollBounce(true);//是否启用越界回弹
        refreshLayout.setEnableScrollContentWhenLoaded(true);//是否在加载完成时滚动列表显示新的内容
        refreshLayout.setEnableHeaderTranslationContent(true);//是否下拉Header的时候向下平移列表或者内容
        refreshLayout.setEnableFooterTranslationContent(true);//是否上拉Footer的时候向上平移列表或者内容
        refreshLayout.setEnableLoadMoreWhenContentNotFull(true);//是否在列表不满一页时候开启上拉加载功能
        refreshLayout.setEnableFooterFollowWhenLoadFinished(false);//是否在全部加载结束之后Footer跟随内容1.0.4
        refreshLayout.setEnableOverScrollDrag(false);//是否启用越界拖动（仿苹果效果）1.0.4

        refreshLayout.setEnableScrollContentWhenRefreshed(true);//是否在刷新完成时滚动列表显示新的内容 1.0.5
        refreshLayout.srlEnableClipHeaderWhenFixedBehind(true);//是否剪裁Header当时样式为FixedBehind时1.0.5
        refreshLayout.srlEnableClipFooterWhenFixedBehind(true);//是否剪裁Footer当时样式为FixedBehind时1.0.5

        refreshLayout.setDisableContentWhenRefresh(false);//是否在刷新的时候禁止列表的操作
        refreshLayout.setDisableContentWhenLoading(false);//是否在加载的时候禁止列表的操作

        refreshLayout.setOnMultiPurposeListener(new SimpleMultiPurposeListener());//设置多功能监听器
        refreshLayout.setScrollBoundaryDecider(new ScrollBoundaryDecider());//设置滚动边界判断
        refreshLayout.setScrollBoundaryDecider(new ScrollBoundaryDeciderAdapter());//自定义滚动边界

        refreshLayout.setRefreshHeader(new ClassicsHeader(context));//设置Header
        refreshLayout.setRefreshFooter(new ClassicsFooter(context));//设置Footer
        refreshLayout.setRefreshContent(new View(context));//设置刷新Content（用于非xml布局代替addView）1.0.4

        refreshLayout.autoRefresh();//自动刷新
        refreshLayout.autoLoadMore();//自动加载
        refreshLayout.autoRefreshAnimationOnly();//自动刷新，只显示动画不执行刷新
        refreshLayout.autoLoadMoreAnimationOnly();//自动加载，只显示动画不执行加载
        refreshLayout.autoRefresh(400);//延迟400毫秒后自动刷新
        refreshLayout.autoLoadMore(400);//延迟400毫秒后自动加载
        refreshLayout.finishRefresh();//结束刷新
        refreshLayout.finishLoadMore();//结束加载
        refreshLayout.finishRefresh(3000);//延迟3000毫秒后结束刷新
        refreshLayout.finishLoadMore(3000);//延迟3000毫秒后结束加载
        refreshLayout.finishRefresh(false);//结束刷新（刷新失败）
        refreshLayout.finishLoadMore(false);//结束加载（加载失败）
        refreshLayout.finishLoadMoreWithNoMoreData();//完成加载并标记没有更多数据 1.0.4
        refreshLayout.closeHeaderOrFooter();//关闭正在打开状态的 Header 或者 Footer（1.1.0）
        refreshLayout.resetNoMoreData();//恢复没有更多数据的原始状态 1.0.4（1.1.0删除）
        refreshLayout.setNoMoreData(false);//恢复没有更多数据的原始状态 1.0.5*/
    }
}
